Performance models can be implemented to predict the scalability of software and hardware systems, either by analytical methods or by simulation. More specifically, requests to software and hardware systems place demands on system resources that are employed to respond to the requests. Although modeling and evaluation techniques exist to obtain performance predictions of such systems, there are few resource consumption estimation methods that can provide good estimates of the service demands. Service demands are important parameters in specifying performance models. Consequently, the accurate estimation of service demands is desired for defining models that are both representative and robust.
Traditionally, central processor unit (CPU) utilization has been implemented to estimate service demands of software and hardware systems. The use of CPU utilization, however, suffers from several deficiencies. For example, CPU utilization measurement requires access to an operating system executed on the hardware, and also requires specialized CPU sampling instrumentation. The CPU sampling instrumentation can interfere with normal system activities and can provide inaccurate CPU utilization measurements. In some scenarios, such as in virtualized environments, accurate CPU utilization sampling is more difficult, because filtering of hypervisor overheads is required, for example. In other scenarios, to be modeled systems are owned by third parties, such as web service providers, which do not provide CPU utilization data for their servers.